package string.leetcode;

/**
 * @author yuisama
 * @date 2023年07月04日 13:32
 * @description 反转字符串中的单词
 */
public class Num151_ReverseWords {
    public String reverseWords(String s) {
        // 先去除掉左右空格
        s = s.trim();
        StringBuilder sb = new StringBuilder();
        // 从后向前遍历s中每个单词
        int i = s.length() - 1;
        int j = s.length();
        while (i >= 0) {
            // 找到第一个空格
            while (i >= 0 && s.charAt(i) != ' ') i --;
            // 此时[i + 1...j)为待添加的单词
            sb.append(s.subSequence(i + 1,j)).append(" ");
            // 跳过两个单词间的所有空格
            while (i >= 0 && s.charAt(i) == ' ') i--;
            // 碰到下个单词的第一个字母，更新j
            j = i + 1;
        }
        // 最后一个单词添加后多一个空格，用trim去除
        return sb.toString().trim();
    }
}
